package com.sogouchat.smsmms;
import java.util.regex.MatchResult;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import android.R.integer;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.Context;
import android.graphics.drawable.Drawable;
import android.text.Spannable;
import android.text.SpannableString;
import android.text.style.ClickableSpan;
import android.text.style.ImageSpan;
import android.view.View;
import android.widget.Toast;
public class MessageTranslate {
private final static String STR_MARK ="(\\[)[^\\]]*(\\])";
public static SpannableString Trans(Context context,String str){
SpannableString ss = new SpannableString(str);
MarkRecorder markrecorder = new MarkRecorder();
FindMark(str, markrecorder);
for (MarkItem item:markrecorder.listItems) {
Drawable d = PicCatch.GetI().Get(item);
if (d!=null) {
d.setBounds(0,0,d.getIntrinsicWidth(),d.getIntrinsicHeight());
ImageSpan span = new ImageSpan(d,ImageSpan.ALIGN_BASELINE);
ss.setSpan(span, item.nStart, item.nEnd, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
ss.setSpan(typeClick(d,context), item.nStart, item.nEnd, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
}
}
return ss;
}
private static ClickableSpan typeClick(final Drawable drawable,final Context context) {
return new ClickableSpan() {
@Override
public void onClick(View widget) {
// TODO Auto-generated method stub
new AlertDialog.Builder(context)
.setIcon(drawable)
.setTitle("pic")
.create().show();
}
};
}
private static void FindMark(String str,MarkRecorder markRecorder){
Pattern pattern;
Matcher matcher;
pattern = Pattern.compile(STR_MARK);
matcher = pattern.matcher(str);
int nStart = 0;
int nEnd = 0;
int nLength = str.length();
String strResult;
while(matcher.find(nStart)) {
MatchResult mResult = matcher.toMatchResult();
strResult =mResult.group(0);
nStart = matcher.start();
nEnd = matcher.end();
markRecorder.addItem(nStart,nEnd,strResult);
nStart = nEnd;
if (nStart>nLength) {
break;
}
}
}
}